The present invention relates generally to system and methods for assisting a user of a computer. More particularly, the present invention relates to help and computer-based training (CBT) systems which assist a user of a computer in the performance of a desired task.
With the advent of the personal computer, the use of computer systems is becoming increasingly prevalent in everyday life. Running software applications such as word processors and spreadsheets, for example, most workers can realize substantial productivity gains. In fact, most businesses today rely heavily on their computers for day-to-day operations.
The typical user of a computer today has little or no training in the computer sciences or even in the basic use of a personal computer. In order to operate a computer effectively, however, he or she must overcome a steep learning curve, one requiring mastery of a number of commands and data formats. One approach to this problem is to spend hours laboring over often-cryptic user manuals--an unattractive option at best. Instead, most users usually abandon printed manuals in favor of trial-and-error learning.
Some of the better manuals also include a written tutorial. This may be augmented by live or video-taped lectures. The approach is still time consuming, however; many users are simply unable to find sufficient time to complete the tutorials. Moreover, the approach tends to be boring and inefficient, with many users wasting time studying features which they will not use. And there is only so much one can learn from screenshots appearing in a book.
With advances in computer and software technology, application software has not necessarily become easier to use either. Instead, technological advances have been largely employed to build more complex functions into existing applications, often resulting in a complicated user interface, such as a staggering array of icons, which leave the user even more bewildered. Thus, while computer applications have continued to increase in functionality, they have also greatly increased in complexity for the user.
The advent of computer-aided help systems perhaps represents the first successful effort to reduce the complexity of computers. Employing some type of "help" facility, these system provide on-line assistance to computer users. In response to a request by a user (e.g., "F1" or help key), such systems display textual help information on the display screen of the computer. Early help systems simply displayed the same (static) information, regardless of the context or circumstances surrounding the request for help. Later, help systems were refined to provide "context-sensitive help," that is, help information which takes into account what particular part or context of an application program the user is in (currently executing). In turn, help information relevant to this current context or user location is then displayed.
Later in the development of help systems artificial intelligence techniques were applied. U.S. Pat. No. 5,103,498, for example, describes an intelligent help system which includes a monitoring device for determining which events (both of the user and of the computer) to store as data in an historical queue. These data are, in turn, stored in a knowledge base. An inference engine tests pre-defined rules against the knowledge base data, thereby providing help appropriate for that particular user.
While undoubtedly an improvement over simple or even context-sensitive help systems, an intelligent help system in the end only can only provide help information to the user. Whether through words or through pictures, these systems only tell a user how to perform a particular type of task. Users certainly appreciate help information specific for the task at hand, but in practice the help information provided does not always convey information sufficient for the user. In essence, there is a limit to just how much information can be provided. And in those systems which provide very specific help information, entailing screen upon screen of detailed textual or graphic explanations, there is a limit to just how much information a user can or will read. Most users simply do not want to read detailed help information, even if provided on-line. Thus, no matter how intelligent or refined a help system is, it ultimately must resort to telling the user how to perform a given task. What the user really wants is for someone to show him or her how to perform the task at hand.
Another approach to assisting the user of a computer is an interactive software training system, as described in U.S. Pat. No. 4,622,013. That system includes a "tutor module" which interrupts the flow of data from the keyboard, interprets and manipulates the input data, selectively generates messages in response to the input data, and selectively allows a subset of the input data to be processed by the target computer program. A separate courseware module is offered for each selected or target computer program. Each courseware module includes a set of events or contextual circumstances relevant to the operation of the selected computer program.
With the advent of multimedia, particularly CD-ROM technology, sophisticated courseware tutorials are now possible. Employing sound and animation, for example, multimedia courseware can provide a "how-to" video, full-motion video available on-line at the press of a key. And as multimedia hardware costs drop, it is now feasible to built courseware into the applications themselves.
Courseware, especially multimedia courseware, offers several advantages over traditional help systems. For instance, one may design courseware which is responsive to unique user inputs, with each courseware module tailored to a specific target program. Courseware is also entirely self-paced, allowing novice users to learn applications at their convenience and at their own speed. Moreover, because these programs are typically interactive, users are less likely to daydream or be otherwise distracted.
Courseware systems are not without their shortcomings, however. In particular, these systems fail to take into consideration the unique "behavior" of the target application which is occurring at the same time. While the approach provides a module for trapping and acting upon selected user events, there is no true bi-directional communication between the tutor module and the user, on the one hand, and between the tutor module and the application on the other. As such, the system lacks the ability to modify and act on the target application in response to target application events themselves, not just user events.
Smart macros, such as Microsoft's "wizards", are another approach to computer-based tutorials. Wizards basically provide macros for completing standard tasks. In operation, a wizard suspends the task at hand and presents the user with a series of questions, typically presented through one or more modal dialog boxes. The wizard then executes or "plays" the macro using the responses as user input. Unless the user slows down the speed at which the macro is played (through a user-settable option), however, macro execution usually occurs too quickly for most users to observe (i.e., as a meaningful tutorial).
Unlike courseware, wizards operate on top of target applications, that is, preserving the look of "live" applications. This in situ approach is effective at demonstrating a particular type of task, such as creating a graph in a spreadsheet, while the user is within a target application. Wizard macros force a context switch, however. By suspending the target application while displaying dialog boxes, wizards do not provide a truly interactive tutorial--one having interaction between the user and the actual target application. Instead, wizards are limited to playing predefined macros for completing "canned" or pre-fabricated application tasks. Thus, although wizards offer some of the "look" of an application, they lack the true "feel" of the target application.